package org.aug.demo.jvm.classpath.impl;

import org.aug.demo.jvm.classpath.Entry;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

/**
 * 表示目录形式的类路径。DirEntry只有一个字段，用于存放目录的绝对路径
 */
public class DirEntry implements Entry {

    private Path absolutePath;

    public DirEntry(String path){
        //获取绝对路径
        this.absolutePath = Paths.get(path).toAbsolutePath();
    }

    /*利用 java.nio.file.Path 类，可以直接在路径下找到对应文件，
    再使用 Files.readAllBytes() 直接读取到字节数组；
    */
    @Override
    public byte[] readClass(String className) throws IOException {
        return Files.readAllBytes(absolutePath.resolve(className));
    }


    @Override
    public String toString() {
        return this.absolutePath.toString();
    }
}
